Обновление до v1.5
Версии dbt v1.3-v1.7 достигли конца жизненного цикла, и их поддержка будет прекращена January 31, 2027. После этой даты dbt Labs больше не будет поддерживать эти версии, и они будут удалены из dbt platform.
До этой даты переведите свои окружения на поддерживаемую версию dbt или канал выпусков, чтобы продолжать получать обновления и поддержку. Подробнее см. в руководстве Переход с устаревших версий dbt.
dbt v1.5 — выпуск с новыми возможностями, включающий два важных дополнения:
- Управление моделями — доступ, контракты, версии — первый этап поддержки развертываний с несколькими проектами
- Точка входа на Python для программного вызова, с теми же возможностями, что и CLI
Полезные ресурсы
- Журнал изменений
- Руководство по установке dbt v1 CLI
- Руководство по обновлению Cloud
- График выпусков
Что нужно знать перед обновлением
dbt Labs стремится обеспечивать обратную совместимость для всех версий 1.x, за исключением изменений, явно указанных ниже. Если после обновления вы столкнетесь с ошибкой, сообщите нам об этом, создав issue.
Изменения поведения
Этот выпуск включает важные новые возможности, а также переработку CLI и процесса инициализации dbt-core. В рамках рефакторинга внутренних механизмов и перехода с argparse на click мы внесли ряд изменений в конфигурацию времени выполнения. В результате параметры конфигурации стали более согласованными и практичными, а кодовая база — более понятной.
Везде, где это возможно, мы будем сохранять обратную совместимость и выводить предупреждения об устаревании как минимум в течение одной минорной версии, прежде чем удалять старую функциональность. В таких случаях мы по-прежнему оставляем за собой право полностью удалить обратную совместимость для устаревшей функциональности в одной из будущих минорных версий v1.x dbt-core.
Настройка log-path и target-path в dbt_project.yml объявлена устаревшей для согласованности с другими настройками времени выполнения, относящимися к конкретному вызову (dbt-labs/dbt#6882). Вместо этого рекомендуем задавать их через переменную окружения или флаг CLI.
Команда dbt list теперь по умолчанию выводит сообщения журнала уровня INFO. Ранее команда list (и только команда list) выводила в stdout сообщения журнала начиная с уровня WARN, чтобы ее результаты можно было передавать через конвейер в jq, файл или другой процесс. Для этого теперь можно использовать любой из следующих параметров:
dbt list --log-level warn(рекомендуется; соответствует прежнему поведению по умолчанию)dbt list --quiet(подавляет все сообщения журнала ниже уровня ERROR, кроме сообщений, выводимых через "print", и результатовlist)
Следующие переменные окружения переименованы для согласованности с соглашением, используемым для всех остальных параметров:
DBT_DEFER_TO_STATE→DBT_DEFERDBT_FAVOR_STATE_MODE→DBT_FAVOR_STATEDBT_NO_PRINT→DBT_PRINTDBT_ARTIFACT_STATE_PATH→DBT_STATE
Как описано в dbt-labs/dbt#7169, параметры командной строки, которые раньше могли игнорироваться без каких-либо сообщений, больше не будут игнорироваться молча. Дополнительные примеры исправляемого поведения см. в dbt-labs/dbt#7158 и dbt-labs/dbt#6800.
Пустой ключ tests: в YAML-файле теперь вызывает ошибку валидации, а не пропускается без уведомления. Чтобы устранить ошибку, удалите пустой ключ tests: или явно задайте для него пустой список:
# ❌ это вызовет ошибку
models:
- name: my_model
tests:
config: ...
# ✅ так допустимо
models:
- name: my_model
tests: [] # todo! добавить тесты позже
config: ...
Некоторые параметры, которые раньше можно было указывать после подкоманды, теперь можно указывать только перед ней. Это также относится к обратным вариантам параметров, например --write-json и --no-write-json. Список затронутых параметров:
Список затронутых параметров
--cache-selected-only | --no-cache-selected-only
--debug, -d | --no-debug
--deprecated-print | --deprecated-no-print
--enable-legacy-logger | --no-enable-legacy-logger
--fail-fast, -x | --no-fail-fast
--log-cache-events | --no-log-cache-events
--log-format
--log-format-file
--log-level
--log-level-file
--log-path
--macro-debugging | --no-macro-debugging
--partial-parse | --no-partial-parse
--partial-parse-file-path
--populate-cache | --no-populate-cache
--print | --no-print
--printer-width
--quiet, -q | --no-quiet
--record-timing-info, -r
--send-anonymous-usage-stats | --no-send-anonymous-usage-stats
--single-threaded | --no-single-threaded
--static-parser | --no-static-parser
--use-colors | --no-use-colors
--use-colors-file | --no-use-colors-file
--use-experimental-parser | --no-use-experimental-parser
--version, -V, -v
--version-check | --no-version-check
--warn-error
--warn-error-options
--write-json | --no-write-json
Кроме того, некоторые параметры, которые раньше можно было указывать перед подкомандой, теперь можно указывать только после нее. Начиная с v1.5 любой параметр, не включенный в приведенный выше список, должен указываться после подкоманды. Например, --profiles-dir.
Встроенный макрос collect_freshness теперь возвращает весь объект response, а не только результат table. Если вы используете собственную реализацию collect_freshness, убедитесь, что она тоже возвращает объект response; иначе некоторые команды dbt никогда не завершатся. Например:
{{ return(load_result('collect_freshness')) }}
И наконец: встроенный макрос generate_alias_name теперь включает логику обработки версионируемых моделей. Если в вашем проекте макрос generate_alias_name переопределен с собственной логикой и вы хотите начать использовать версии моделей, вам потребуется обновить логику этого макроса. Обратите внимание: это не обязательное условие обновления до v1.5, а лишь требование для использования новой возможности. Тем не менее мы рекомендуем сделать это при обновлении, независимо от того, планируете ли вы использовать версии моделей завтра или в далеком будущем.
Аналогично, если в вашем проекте макрос ref переопределен с собственной логикой, вам потребуется обновить ее, как описано здесь.
Для пользователей артефактов dbt (метаданных)
Версия схемы manifest будет обновлена до v9. Конкретные изменения:
- Добавлен ключ верхнего уровня
groups - Добавлены атрибуты узлов верхнего уровня
access,constraints,version,latest_versionдля моделей - Добавлен атрибут уровня столбца
constraints - Добавлены настройки узлов
groupиcontract - Для поддержки версий моделей тип
refsизменен сList[List[str]]наList[RefArgs], с вложенными ключамиname: str,package: Optional[str] = Noneиversion: Union[str, float, NoneType] = None).
Для разработчиков и сопровождающих плагинов адаптеров
Чтобы получить более подробную информацию и задать вопросы, ознакомьтесь с обсуждением на GitHub и оставьте комментарий: dbt-labs/dbt#7213.
Новая и обновленная документация
Управление моделями
Первый этап поддержки масштабных развертываний dbt в нескольких проектах с четко определенными зонами ответственности и границами интерфейсов. Прочитайте об управлении моделями: все эти возможности появились в v1.5.
Обновленный CLI
Компилируйте и предварительно просматривайте модели dbt и dbt-SQL-запросы с --inline в CLI с помощью:
dbt compiledbt show(новинка!)
Методы выбора узлов могут использовать подстановочные символы в стиле Unix для выбора узлов, соответствующих шаблону:
dbt ls --select "tag:team_*"
А еще (!): впервые появилась точка входа для программного вызова с теми же возможностями, что и команды CLI.
Выполните dbt --help, чтобы увидеть новую, улучшенную справку :)
Кратко о других изменениях
- Ключ верхнего уровня
version: 2теперь необязателен во всех YAML-файлах. Кроме того, ключи верхнего уровняconfig-version: 2иversion:теперь необязательны в файлахdbt_project.yml. - События и журналирование: в словарь
node_info, доступный в событиях, относящихся к конкретным узлам, добавленnode_relation(database,schema,identifier) - Поддерживается задание
--project-dirчерез переменную окружения:DBT_PROJECT_DIR - Более детальные настройки журналирования (для задания формата журнала, уровней журналирования и цветового оформления) и заполнения кеша
- dbt перезаписывает файл
manifest.jsonво время разбора, поэтому, если вы ссылаетесь через--stateна каталогtarget/, может появиться предупреждение о том, что сохраненный манифест не найден.